
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <stdbool.h>
#include <stdarg.h>
#include <arr.h>
#include <syntax.h>
#include "environment.h"
#include "context.h"
/*
int WORD_SIZE 的空间占据内存空间的4个字节，每个字节都有1个的地址，但只有首字节的地址才能作为整个 int WORD_SIZE空间的地址
&WORD_SIZE 代表的就是第一个字节的地址
任何编译器的底层都会频繁使用指针，绝对离不开指针
使用指针的目的是为了更加方便的访问内存空间，但是指针的级数不能太多，超过3级，反而会降低访问速度

2重指针（函数指针，数组指针）存在的意义：就是为了让编译器了解程序员希望这个指针指向什么东西。然后做静态类型检查，辅助发现编程错误，是一种编译时查错机制
*/
static const int *WORD_SIZE =null; 
if(NULL != WORD_SIZE){
    *WORD_SIZE=4
} else {
    printf("p == Null\n")
}
/*
对于底层硬件驱动而言，在使用某个指针前，先判断指针是否为空，是十分必要的，这可以避免野指针的出现
*/
int *p= &WORD_SIZE;
int **p1=&p;


const int MAX_MNEMONIC_LENGTH=7;

void emit_header(FILE *out, char *name) {
    //fprintf 格式化读写磁盘文件函数
     fprintf(out, "%s\n", name);
}

void func1(void){
    printf("我是函数1")
}
void emit_instr(FILE *out, char *instr, char *operands){
    fprintf(out , "  %s", instr);
    //编译器开发大量应用函数指针， 提高编译后程序软件的执行效率速度，极限压榨芯片性能
    //函数指针只占4个字节，消耗内存极低
    void (*pFunc)(void);
    pFunc = func1;  //左边是函数指针变量，右边是函数名
    pFunc()
}

